﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace QldtSdh.BLL
{
    public enum CODE_RESULT_RETURN
    {
        ThanhCong,
        MaTrung,
        TenTrung,
        ThatBai
    }

    public enum VAITRO
    {
        ChuyenVien,
        Admin
    }

    public enum KHOIKIENTHUC
    {
        KIENTHUCCHUNG = 0,
        KIENTHUCCOSO = 1,
        KIENTHUCCHUYENNGANH = 2,
        KHOALUANTOTNGHIEP = 3
    }

    public enum LOAITHAOTAC
    {
        Thêm,
        Xóa,
        Chỉnh_sửa
    }

    public enum LOAIDOITUONG
    {
        CƠ_SỞ_ĐÀO_TẠO,
        ĐƠN_VỊ_ĐÀO_TẠO,
        CHUYÊN_NGÀNH_ĐÀO_TẠO,
        HỌC_PHẦN,
        CHƯƠNG_TRÌNH_ĐÀO_TẠO,
        PHÒNG_HỌC,
        ĐỀ_TÀI_LUẬN_VĂN,
        GIẢNG_VIÊN,
        KHÓA_HỌC,
        HỌC_VIÊN,
        LỚP_KHÓA_NGÀNH,
        ĐỢT_TUYỂN_SINH,
        CHI_TIẾT_KHÓA_HỌC,
        CHI_TIẾT_CHƯƠNG_TRÌNH_ĐÀO_TẠO,
        LỚP_HỌC_PHẦN,
        LỚP_HỌC_PHẦN_HỌC_VIÊN,
        PHÂN_CÔNG_GIẢNG_DẠY,
        CHI_TIẾT_LỚP_HỌC_PHẦN,
        NGƯỜI_SỬ_DỤNG,
        BẢO_LƯU,
        ĐỢT_THI,
        CHI_TIẾT_ĐỢT_THI,
        BẢNG_ĐIỂM,
        CHI_TIẾT_BẢNG_ĐIỂM,
        HỌC_KỲ,
        KẾ_HOẠCH_ĐÀO_TẠO,
        THỜI_KHOÁ_BIỂU_LỚP_HỌC_PHẦN,
        CÔNG_VIỆC_BẬN_CỦA_GV,
        LOAI_DE_TAI,
        DE_TAI,
        CHƯƠNG_TRÌNH_ĐÀO_TẠO_HỌC_PHẦN,
        KHÓA_HỌC_NCS,
        NGHIÊN_CỨU_SINH,
        NGÀNH_ĐÀO_TẠO_NCS,
        BIÊN_CHẾ_NCS
    }

    public enum TRANGTHAI_BANGDIEM
    {
        CHUANHAPDIEM,
        DANHAPXONG,
        BAOLOINHAP,
        DAPHEDUYET
    }

    public class EnumWithName<T>
    {
        public string Name { get; set; }
        public int Value { get; set; }

        public static List<EnumWithName<T>> ParseEnum()
        {
            List<EnumWithName<T>> list = new List<EnumWithName<T>>();

            foreach (object o in Enum.GetValues(typeof(T)))
            {
                list.Add(new EnumWithName<T>
                {
                    Name = Enum.GetName(typeof(T), o).Replace('_', ' '),
                    Value = (int)o
                });
            }

            return list;
        }
        public static string GetName(T objEnum)
        {
            try
            {
                return Enum.GetName(typeof(T), objEnum).Replace('_', ' ');
            }
            catch
            {
                return "Không tìm thấy";
            }
        }
    }

    public class KHOIKIENTHUC_STRING
    {
        public static string KIENTHUC_CHUNG = "Kiến thức chung";
        public static string KIENTHUC_COSO = "Kiến thức cơ sở";
        public static string KIENTHUC_CHUYENNGANH = "Kiến thức chuyên ngành";
        public static string KIENTHUC_KHOALUANTOTNGHIEP = "Khoá luận tốt nghiệp";
    }

    public class ERROR_CONSTANT_STRING
    {
        /// <summary>
        /// Mã trùng
        /// </summary>
        public static string LOI_MATRUNG = "Mã {0} trùng";
        /// <summary>
        /// Mã rỗng
        /// </summary>
        public static string LOI_MARONG = "Mã {0} rỗng";
        /// <summary>
        /// Tên trùng
        /// </summary>
        public static string LOI_TENTRUNG = "Tên {0} trùng";
        /// <summary>
        /// Tên rỗng
        /// </summary>
        public static string LOI_TENRONG = "Tên {0} rỗng";
        /// <summary>
        /// Thêm lỗi
        /// </summary>
        public static string LOI_THEM = "Không thể thêm {0} lúc này";
        /// <summary>
        /// Cập nhật lỗi
        /// </summary>
        public static string LOI_CAPNHAT = "Không thể cập nhật {0} lúc này";
        /// <summary>
        /// Xóa lỗi
        /// </summary>
        public static string LOI_XOA = "Không thể xóa {0} lúc này";
        /// <summary>
        /// Danh sách rỗng
        /// </summary>
        public static string LOI_DANHSACHRONG = "Danh sách {0} rỗng";
        /// <summary>
        /// Lỗi chưa chọn 1 mục trong danh sách
        /// </summary>
        public static string LOI_NOTYET_SELECT_ITEM = "Bạn chưa chọn {0}";
        /// <summary>
        /// Một trường nào đó trống
        /// </summary>
        public static string LOI_FIELD_EMPTY = "Dữ liệu trống";

        public static string LOI_NUMBER_FORMAT = "Bạn phải nhập số";
    }

    public class ENTITY_NAME
    {
        public static string APPUSER = "Người sử dụng";
        public static string COSODAOTAO = "Cơ sở Đào tạo";
        public static string DONVIDAOTAO = "Đơn vị Đào tạo";
        public static string CHUYENGANHDAOTAO = "Chuyên ngành Đào tạo";
        public static string HOCPHAN = "Học phần";
        public static string CHUONGTRINHDAOTAO = "Chương trình Đào tạo";
        public static string PHONGHOC = "Phòng học";
        public static string DETAILUANVAN = "Đề tài Luận văn";
        public static string GIANGVIEN = "Giảng viên";
        public static string KHOAHOC = "Khóa học";
        public static string HOCVIEN = "Học viên";
        public static string LOPKHOANGANH = "Lớp khóa ngành";
        public static string DOTTUYENSINH = "Đợt tuyển sinh";
        public static string KHOAHOCNGANHDAOTAO = "Khóa học - ngành";
        public static string CHUONGTRINHDAOTAOHOCPHAN = "Chương trình đào tạo - học phần";
        public static string KHOAHOCNCS = "Khóa học - NCS";
        public static string CHUYENNGANHNCS = "Chuyên ngành - NCS";
        public static string NGHIENCUUSINH = "Nghiên cứu sinh";
    }

    public class TITLE_FORM_DETAIL
    {
        public static string ADDNEW = "Thêm mới {0}";
        public static string EDIT = "Cập nhật {0}";
    }

    public class NOTIFY_CONSTANT_STRING
    {
        /// <summary>
        /// Thông báo xác nhận xóa
        /// </summary>
        public static string DELETE = "Bạn có chắc muốn xóa";
    }

    public class InvalidNameException : Exception
    {
        public InvalidNameException(string msg) : base(msg) { }
    }

    public class InvalidObjectException : Exception
    {
        public InvalidObjectException(string msg) : base(msg) { }
    }
}
